{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 概述\n",
    "--------------\n",
    "\n",
    "这里是概述\n",
    "\n",
    "### 段落1\n",
    "\n",
    "这里是段落1， $ y_n $ 函数如下：\n",
    "\n",
    "$$ y_n = \\sum_{k=0}^{M-1} h_k x_{n-k} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2e1225f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(2,1,sharex=True)\n",
    "ax = axs[0]\n",
    "x = np.linspace(0.1, 4 * np.pi, 600)\n",
    "y = np.sin(x ** 1.55) * x ** 1.25\n",
    "ax.plot(x, y)\n",
    "ax.grid()\n",
    "\n",
    "ax = axs[1]\n",
    "x = np.linspace(0.1, 4 * np.pi, 600)\n",
    "y = np.sin(x ** 0.75)\n",
    "ax.plot(x, y)\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 让sympy输出漂亮的数学式\n",
    "\n",
    "Jupyter会使用MathML来渲染sympy输出Tex格式的数学式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sympy as sp\n",
    "sp.init_printing()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "hide_input": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/latex": [
       "$$\\int e^{x} \\cos{\\left (x \\right )}\\, dx = \\frac{e^{x}}{2} \\sin{\\left (x \\right )} + \\frac{e^{x}}{2} \\cos{\\left (x \\right )}$$"
      ],
      "text/plain": [
       "⌠                 x           x       \n",
       "⎮  x             ℯ ⋅sin(x)   ℯ ⋅cos(x)\n",
       "⎮ ℯ ⋅cos(x) dx = ───────── + ─────────\n",
       "⌡                    2           2    "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = sp.Symbol('x')\n",
    "a = sp.Integral(sp.cos(x)*sp.exp(x), x)\n",
    "sp.Eq(a, a.doit())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "设间接测得量 $ N = f(x_1, x_2, x_3) $，其中 $ x_1，x_2，x_3 $ 均为彼此相互独立的直接测得量，每一直接测得量为等精度多次测量，它们的绝对误差分别为 $ \\Delta x_1，\\Delta x_2，\\Delta x_3 $ 那么 $ N $ 的绝对值传递规律为：\n",
    "\n",
    "$$ \\Delta_N = \\left|\\frac { \\partial f }{ \\partial x_1} \\right| \\Delta_{x_1} + \\left|\\frac { \\partial f }{ \\partial x_2 } \\right| \\Delta_{x_2} +  \\left|\\frac { \\partial f }{ \\partial x_3} \\right| \\Delta_{x_3}$$\n",
    "\n",
    "如果放置在溶液中的电极的电极常数为 $ Q $，电极间的电导为 $ G $，则溶液的电导率 $ K $ 可表示为：\n",
    "\n",
    "$$ K = QG $$\n",
    "\n",
    "而电极常数 \n",
    "\n",
    "$$ Q = \\frac{L}{A} $$\n",
    "\n",
    "其中 $ L $ 为两电极间的距离，$ A $ 为电极的有效面积。如果电极为圆形，其直径为 $ D $，则根据圆周面积公式 $ A = \\pi (\\frac{D}{2})^2 $ 有：\n",
    "\n",
    "$$ K = \\frac{4 L}{\\pi D^{2} R} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "hide_input": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\\frac{4 L}{\\pi D^{2} R}\n",
      "\\frac{8 \\Delta_D}{\\pi} \\left|{\\frac{L}{D^{3} R}}\\right| + \\frac{4 \\Delta_L}{\\pi} \\left|{\\frac{1}{D^{2} R}}\\right| + \\frac{4 \\Delta_R}{\\pi} \\left|{\\frac{L}{D^{2} R^{2}}}\\right|\n"
     ]
    }
   ],
   "source": [
    "K,R,L,D = sp.symbols('K,R,L,D')\n",
    "dK,dR,dL,dD = sp.symbols('\\Delta_K,\\Delta_R,\\Delta_L,\\Delta_D')\n",
    "K = L / (sp.pi * ((D/2) ** 2) * R)\n",
    "dK = sp.Abs(sp.diff(K, L))*dL + sp.Abs(sp.diff(K, D))*dD + sp.Abs(sp.diff(K, R))*dR\n",
    "\n",
    "print(sp.latex(K))\n",
    "print(sp.latex(dK))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "电导率计算公式为：$$ K = \\frac{4 L}{\\pi D^{2} R} $$\n",
    "\n",
    "其误差传递公式为：$$ \\Delta_K = \\frac{8 \\Delta_D}{\\pi} \\left|{\\frac{L}{D^{3} R}}\\right| + \\frac{4 \\Delta_L}{\\pi} \\left|{\\frac{1}{D^{2} R}}\\right| + \\frac{4 \\Delta_R}{\\pi} \\left|{\\frac{L}{D^{2} R^{2}}}\\right| $$\n",
    "\n",
    "温度补偿公式：$$ K_t = K_{25}[1 + \\alpha(t - t_{25})] $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAABHNCSVQICAgIfAhkiAAAAM5JREFU\nOI3N0rEyQ0EUxvEfJcMVWhoZ8Qpq75PnoDJ0Kl5BK0U67yAUiUYmpZGYoRDNuePOkXszYxS+5ps9\n5/x3Z3c//lC7uMIz3jHCOVpNUBsTzHGDU/RjfY+dOvA2hrqpfhb1y0XQfjSHWE29DUwxw7o0cBze\nw2cCX3GHNRxl8DD8oeYaj+GdDBbhLzVgWd/K4DKthM8zWO5YWKzN6lwVHIR3asCD8B9v0Lb8O97E\nd2T9KgDlqdXInfiO3EBD5GAP1xjjA0+4wHYT9I/1BRgnMa7SDNsAAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$$0$$"
      ],
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f,x = sp.symbols('f,x')\n",
    "sp.diff(f, x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy import optimize "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 曲线拟合\n",
    "\n",
    "假设我们有从被噪声污染的f中抽样到的数据："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(x):\n",
    "    return 1.23 * x**2 + 5.67 * np.sin(x)\n",
    "xdata = np.linspace(-10, 10, num=200)\n",
    "ydata = f(xdata) + np.random.randn(xdata.size) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果我们知道函数形式(当前情况是 $ x^2 + sin(x)$ )，但是不知道幅度。我们可以通过最小二乘拟合拟合来找到幅度。首先我们定义一个用来拟合的函数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#def f2(x, a, b):\n",
    "#    return a * x**2 + b * np.sin(x) \n",
    "f2 = lambda x, a, b: a * x**2 + b * np.sin(x) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后我们可以使用 $ scipy.optimize.curve_fit() $ 来找到 $ a $ 和 $ b $："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1.2266645   5.68750421]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\naKONZyP+B2XreNe/ybhMAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$$1.23 x^{2} + 5.69 \\sin{\\left (x \\right )}$$"
      ],
      "text/plain": [
       "      2              \n",
       "1.23⋅x  + 5.69⋅sin(x)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "guess = [1, 2]\n",
    "params, params_covariance = optimize.curve_fit(f2, xdata, ydata, guess)\n",
    "print(params)\n",
    "x = sp.Symbol('x')\n",
    "y = sp.Symbol('y')\n",
    "y = round(params[0], 2) * x ** 2 + round(params[1], 2) * sp.sin(x)\n",
    "y.doit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.1194590606527519"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import math\n",
    "\n",
    "math.pi * (0.39 / 2)**2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "“三相五线制”：是指，3根火线、1根零线、1根地线？\n",
    "\n",
    "如果是上面那样，按邮件描述这个电压规格有问题：\n",
    "\n",
    "这个三相电的线电压的相位差是 $360^{\\circ} \\div = 120^{\\circ} $，那么相电压跟线电压的关系为： $相电压 = 线电压 \\div \\sqrt{3}$，440V的线电压下的相电压应为：$ 440V \\div \\sqrt{3} \\approx 254V \\neq 220V $ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from beakerx import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<button onclick=\"$('.input, .output_stderr, .output_error').toggle();\">Toggle Code</button>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%HTML\n",
    "<button onclick=\"$('.input, .output_stderr, .output_error').toggle();\">Toggle Code</button>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>\n",
       "code_show=true; \n",
       "function code_toggle() {\n",
       " if (code_show){\n",
       " $('div.input').hide();\n",
       " } else {\n",
       " $('div.input').show();\n",
       " }\n",
       " code_show = !code_show\n",
       "} \n",
       "$( document ).ready(code_toggle);\n",
       "</script>\n",
       "<form action=\"javascript:code_toggle()\"><input type=\"submit\" value=\"Click here to toggle on/off the raw code.\"></form>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import HTML\n",
    "\n",
    "HTML('''<script>\n",
    "code_show=true; \n",
    "function code_toggle() {\n",
    " if (code_show){\n",
    " $('div.input').hide();\n",
    " } else {\n",
    " $('div.input').show();\n",
    " }\n",
    " code_show = !code_show\n",
    "} \n",
    "$( document ).ready(code_toggle);\n",
    "</script>\n",
    "<form action=\"javascript:code_toggle()\"><input type=\"submit\" value=\"Click here to toggle on/off the raw code.\"></form>''')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参考\n",
    "---------------\n",
    "\n",
    "* 作者， *来源*， 日期。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
